热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据项|校徽_Python实战高校数据采集,爬虫训练场项目数据储备

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python实战高校数据采集,爬虫训练场项目数据储备相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python实战高校数据采集,爬虫训练场项目数据储备相关的知识,希望对你有一定的参考价值。




在制作 爬虫训练场 项目时,需要准备大量的数据,供大家学习使用,本系列博客用于数据储备。



文章目录


    • 示例代码如下所示
    • 数据入库


本次要采集的是高考大数据,即 2022 年学校排名,数据来源为百度,地址如下。

https://motion.baidu.com/activity/gaokao2022/trend

通过开发者工具获取请求接口与请求参数,得到内容如下所示。


  1. 请求地址:https://motion.baidu.com/gaokao/trendasync?pageSize=30&pageIndex=2
  2. 请求方法:POST
  3. 请求头重点参数:
    • origin:域名
    • referer:上一页地址
    • user-agent:用户代理
  4. 请求参数:
    • 查询参数:pageSize & pageIndex
    • 请求载荷:"source":"全国","tabValue":"campus","filter":,"isScrolling":1

多次测试除 COOKIE 外,无特殊加密参数,并且我们对数据的采集效率无要求,所以可以直接使用 requests 模块对请求进行模拟。


示例代码如下所示

一款普通的 requests 模块爬虫。

import json
import requests
def get_gaokao_data():
headers =
"origin": "https://motion.baidu.com",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/108.0.0.0 Safari/537.36"

data = "source": "全国", "tabValue": "campus", "filter": , "isScrolling": 1
res = requests.post("https://motion.baidu.com/gaokao/trendasync?pageSize=30&pageIndex=0", headers=headers,
data=json.dumps(data))
print(res.text)
if __name__ == '__main__':
get_gaokao_data()

运行代码,可以得到 JSON 格式的响应数据,并且检测到 pageIndex 参数从 0 开始计数,当设置为无限大时,无数据返回,即得到下述格式数据,表示数据已经获取完毕。也可以通过判断 finished 的值判断请求是否结束。

"status":0,"msg":"successful","data":"list":[],"finished":true,"trace":"logid":xxxx

既然已经获取了起始和结尾数据,那我们就可以对爬虫的采集层次进行控制了,通过一个【死循环】抓取数据,当 data/list 为空时,结束采集。


数据入库

上文的示例代码,已经成功采集到 JSON 数据,接下来将其存储到 mysql 数据库中,建表前对响应数据进行格式化操作,核对字段。这里重要的是 data/list 中的数据项。

批次/batchTimes:本科
类别/category:综合类
城市/city:城市
特色/feature:["上海", "本科", "综合类", "985", "211", "双一流", "强基计划", "自主招生"]
热度/hotValue:
学校名/name:同济大学
校徽/pic:`ttps://static-data.eol.cn/upload/logo/73.jpg`
省份/province:"上海"

基于该数据,建立数据表结构如下所示。

接下来编写数据解析函数和数据入库函数,代码如下所示。

def format_data(data):
"""
数据解析函数
:return:
"""

finished = data["data"]["finished"]
if finished:
# 数据采集完毕
return -1
else:
ret_list = data["data"]["list"]
school_list = []
for item in ret_list:
province = item["province"]
city = item["city"]
name = item["name"]
batchTimes = item["batchTimes"]
pic = item["pic"]
feature = ",".join(item["feature"])
hotValue = item["hotValue"]
category = item["category"]
school_list.append((name, province, city, feature, hotValue, pic, category, batchTimes))
insert_mysql(school_list)

上述代码无特殊部分,仅数据采集结束时,返回了状态值 -1,该值用于后续在主函数进行判断使用。

数据入库代码,使用 cursor.executemany(),函数编码如下所示。

def insert_mysql(schools):
"""
插入MySQL数据
:return:
"""

conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='root', # 你的密码
database='playground',
charset='utf8'
)
cursor = conn.cursor()
sql = "insert into school_list(name,province,city,feature,hotValue,pic,category,batchTimes)values(%s,%s,%s,%s,%s,%s,%s,%s)"
affect_rows = cursor.executemany(sql, schools)
conn.commit()
cursor.close()
conn.close()

运行代码,可以将首页数据插入到表格中,共采集到 30 条数据,在 MySQL 表中查阅如下。

最后一步,将刚刚的代码扩展到全量数据,即【死循环】实现数据采集。

if __name__ == '__main__':
flag = True
index = 1
while flag:
ret = get_gaokao_data(index)
index += 1
if ret == -1:
flag = False

运行几秒钟之后,可以得到完整数据,最后的结果是 2760 所学校。



这些数据,最后将发布到 pachong.vip,大家可以交流学习使用。




📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 804 篇原创博客




从订购之日起,案例 5 年内保证更新



  • ⭐️ Python 爬虫 120,点击订购 ⭐️
  • ⭐️ 爬虫 100 例教程,点击订购 ⭐️

推荐阅读
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 利用树莓派畅享落网电台音乐体验
    最近重新拾起了闲置已久的树莓派,这台小巧的开发板已经沉寂了半年多。上个月闲暇时间较多,我决定将其重新启用。恰逢落网电台进行了改版,回忆起之前在树莓派论坛上看到有人用它来播放豆瓣音乐,便萌生了同样的想法。通过一番调试,终于实现了在树莓派上流畅播放落网电台音乐的功能,带来了全新的音乐享受体验。 ... [详细]
  • 在Conda环境中高效配置并安装PyTorch和TensorFlow GPU版的方法如下:首先,创建一个新的Conda环境以避免与基础环境发生冲突,例如使用 `conda create -n pytorch_gpu python=3.7` 命令。接着,激活该环境,确保所有依赖项都正确安装。此外,建议在安装过程中指定CUDA版本,以确保与GPU兼容性。通过这些步骤,可以确保PyTorch和TensorFlow GPU版的顺利安装和运行。 ... [详细]
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • Python SDK,即Python软件开发工具包,是为开发者提供的一系列工具和库,旨在简化使用Python进行应用程序开发的过程。它不仅包括了基本的编程接口,还涵盖了各种实用工具和示例代码,帮助开发者更高效地构建和测试软件。通过使用Python SDK,开发者可以轻松集成复杂的功能模块,提高开发效率和代码质量。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 在PHP中实现腾讯云接口签名,以完成人脸核身功能的对接与签名配置时,需要注意将文档中的POST请求改为GET请求。具体步骤包括:使用你的`secretKey`生成签名字符串`$srcStr`,格式为`GET faceid.tencentcloudapi.com?`,确保参数正确拼接,避免因请求方法错误导致的签名问题。此外,还需关注API的其他参数要求,确保请求的完整性和安全性。 ... [详细]
  • 在 Vue 应用开发中,页面状态管理和跨页面数据传递是常见需求。本文将详细介绍 Vue Router 提供的两种有效方式,帮助开发者高效地实现页面间的数据交互与状态同步,同时分享一些最佳实践和注意事项。 ... [详细]
  • 单链表的高效遍历及性能优化策略
    本文探讨了单链表的高效遍历方法及其性能优化策略。在单链表的数据结构中,插入操作的时间复杂度为O(n),而遍历操作的时间复杂度为O(n^2)。通过在 `LinkList.h` 和 `main.cpp` 文件中对单链表进行封装,我们实现了创建和销毁功能的优化,提高了单链表的使用效率。此外,文章还介绍了几种常见的优化技术,如缓存节点指针和批量处理,以进一步提升遍历性能。 ... [详细]
  • Java环境中Selenium Chrome驱动在大规模Web应用扩展时的性能限制分析 ... [详细]
  • JavaScript XML操作实用工具类:XmlUtilsJS技巧与应用 ... [详细]
  • 本文介绍了一种利用PHP cURL库高效提取Sohu邮箱联系人列表的方法。通过设置错误报告级别、定义Cookie文件路径等关键步骤,确保了代码的稳定性和可靠性。经过实际测试,该方法在2012年3月24日被验证为有效,能够快速准确地获取联系人信息。此外,文章还提供了详细的代码示例和注意事项,帮助开发者更好地理解和应用这一技术。 ... [详细]
author-avatar
手机用户2502927277
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有